package de.g18.gruppe3.gui.helper;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JOptionPane;

/**
 * Macht das Ausführen einer Action Exception-Safe, tritt eine Exception auf wird
 * ein Dialog geöffnet der die "message" der Exception anzeigt. ZUsätzlich wird
 * der StackTrace in der Konsole ausgegeben.
 *
 * @author <a href="mailto:kevinhuber.kh@gmail.com">Kevin Huber</a>
 */
public abstract class AbstractAction implements ActionListener {

	@Override
	public final void actionPerformed(ActionEvent aEvent) {
		try {
			execute(aEvent);
		} catch (Exception e) {
		    e.printStackTrace();
			JOptionPane.showMessageDialog(null, e.getMessage());
		}
	}

	/**
	 * Wird von {@link #actionPerformed(ActionEvent)} aufgerufen und behandelt das
	 * übergebene {@link ActionEvent};
	 *
	 * @throws Exception Falls irgendwas schiefläuft. Wird in {@link #actionPerformed(ActionEvent)} abgefangen
	 */
	protected abstract void execute(ActionEvent aEvent) throws Exception;
}